#include <stdio.h>
#include <string.h>
#include "gestion_patient.h"
void menu_patient(char chemin1[]);



void menu_patient(char chemin1[])
{
    int i;
    printf("\n\n");
    printf("********************\n");
    printf("*       MENU       *\n");
    printf("********************\n");
    printf("1: Lire_patient \n");
    printf("2: Ajouter_patient \n");
    printf("3: Rechercher_patient \n");
    printf("4: Supprimer_patient \n");
    printf("5: Modifier_patient \n");
    printf("6: Quitter menu \n\n");
    printf ("Donnez votre choix svp !\n");
    scanf("%d",&i);

    switch (i)
    {
    case 1:
        lire_patient(chemin1) ;
        break;
    case 2:
        ajouter_patient(chemin1);
        break;
    case 3:
        rechercher_patient(chemin1);
        break;
    case 4:
        supprimer_patient(chemin1);
        break;
    case 5:
        modifier_patient(chemin1);
        break;
    case 6:
    {
        printf("              Au revoir !!\n     on vous souhaite une bonne journée \n");
        break;
    }
    default:
    {
        printf("/!\\ Option inexistante /!\\\n");
        break;
    }

    }
}

//lecture du fiche patient
void lire_patient(char chemin1[])
{
    Patient P;
    FILE *f;
    f=fopen(chemin1,"r");
    int n;
    n=NombrePatients(chemin1);
    if(n==0)
    {
        printf("Fiche Vide !!\n");
    }
    if(f==NULL)
    {
        printf("Impossible d\'ouvrir le fichier\n");

    }
    else
    {
        while(fscanf(f,"%s %s %d %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.etat)) != EOF)
        {
            printf("-------------------------------------------------------\n");
            printf("Nom: %s Prenom: %s Age: %d CIN: %ld Etat:%d \n",P.nom,P.prenom,P.age,P.cin,P.etat);
            printf("-------------------------------------------------------\n");
        }
    }
    menu_patient(chemin1);
    fclose(f);
}

//ajout d'un patient
void ajouter_patient(char chemin1[])
{
    int i=0,n;
    Patient P;
    FILE *f;
    f=fopen(chemin1,"a");

    if(f==NULL)
    {
        printf("\n Impossible d\'ouvrir le fichier ");
    }
    else
    {

        if(fscanf(f,"%s %s %d %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.etat))== EOF)
        {
            printf(" Donnez le nbre du patient a ajouter:\n");
            scanf("%d",&n);
            for(i=0; i<n; i++)
            {
                printf(" Donnez le Nom du patient à ajouter N° %d:\n",i);
                scanf("%s",P.nom);
                printf(" Donnez le Prenom du patient à ajouter N° %d:\n",i);
                scanf("%s",P.prenom);
                printf(" Donnez l'Age du patient à ajouter N° %d:\n",i);
                scanf("%d",&(P.age));
                printf(" Donnez le CIN du patient à ajouter N° %d:\n",i);
                scanf("%ld",&(P.cin));
                printf(" Donnez l'Etat du patient à ajouter N° %d:\n",i);
                scanf("%d",&(P.etat));

                fprintf(f,"%s %s %d %ld %d\n",P.nom,P.prenom,P.age,P.cin,P.etat);
            }
        }
    }
    fclose(f);
    printf("L'AJOUT EST FAITE AVEC SUCCÉE :)\n");
    menu_patient(chemin1);

}
//rechercher patient
int rechercher_patient(char chemin1[])
{
    Patient P;
    FILE *f;
    long int ci;
    int i,choix;
    char nom[20],prenom[20];
    int n;
    n=NombrePatients(chemin1);
    if(n==0)
    {
        printf("Fiche Vide !!\n");
    }
    else
    {
        printf("******************************************\n");
        printf("**   Rechercher le patient à modifier   **\n");
        printf("******************************************\n");
        printf("   1. Recherche par nom et prenom\n   2. Recherche par cin\n");
        printf("   3. Annuler\nFaites votre choix : ");
        scanf("%d",&choix);
        f=fopen(chemin1,"r");
        if (f==NULL)
        {
            printf("\nImpossible d\'ouvrir le fichier\n");

        }
        else
        {
            switch(choix)
            {
            case 1:
                printf("Entrez nom et le prenom: ");
                scanf("%s %s",nom,prenom);

                while(fscanf(f,"%s %s %d %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.etat))!=EOF )
                {
                    if((strcmp(P.nom,nom)==0)&&(strcmp(P.prenom,prenom)==0))
                    {
                        printf ("\n%s %s %d %ld %d  ",P.nom,P.prenom,P.age,P.cin,P.etat);

                    }
                }
                break;
            case 2:
                printf("\nEntrez le cin du patient:\n");
                scanf("%ld",&ci);

                while(fscanf(f,"%s %s %d %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.etat))!=EOF )
                {
                    if((P.cin)==ci)
                    {
                        printf ("\n%s %s %d %ld %d  ",P.nom,P.prenom,P.age,P.cin,P.etat);

                    }
                    else
                    {
                        printf("Ce patient n'existe pas!\n");
                    }
                }
                break;
            case 3:
                printf("  RECHERCHE ANNULER !!\n");
                break;
            default:
                break;
            }
        }
        fclose(f);
        menu_patient(chemin1);

    }
    return 0;
}

//suppression d'un patient
void supprimer_patient(char chemin1[])
{
    int t;
    Patient P;
    long int ci;
    FILE *f1,*f2;
    char temp1[]="/Desktop/abc/temp1.txt";


    f1=fopen(chemin1,"r");
    f2=fopen(temp1,"w");
    if(f1==NULL||f2==NULL)
        printf("\n Impossible d'ouvrir le fichier \n");
    else
    {
        t=0;
        do
        {
            printf("\ndonner cin\n");
            scanf("%ld",&ci);
        printf("%d",t);

            rewind(f1);

            while(fscanf(f1,"%s %s %d %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.etat))!=EOF )
            {
                if((P.cin)==ci)
{
                    t=1;
                break;}
            }
        }
        while(t==0);
        /*printf("%d",t);*/
        rewind(f1);

        while (fscanf(f1,"%s %s %d %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.etat))!=EOF )
        {

            if ((P.cin)!=ci)
                fprintf (f2,"%s %s %d %ld %d",P.nom,P.prenom,P.age,P.cin,P.etat);
        }
        fclose(f1);
        fclose(f2);
        remove(chemin1);
        rename(temp1,chemin1);
        printf("\nLa suppression est faite avec succée!\n");
    }
    menu_patient(chemin1);

}
//modification
void modifier_patient (char chemin1[])
{
    long int ci;
    FILE *f1,*f2;
    int choix;
    char temp1[]="temp.txt";
    Patient P;
    f1=fopen(chemin1,"r");
    f2=fopen(temp1,"a");
    int n;
    n=NombrePatients(chemin1);
    if(n==0)
    {
        printf("Fiche Vide !!\n");
    }
    else
    {
        if(f1==NULL||f2==NULL)
        {
            printf("\n Impossible d\'ouvrir le fichier\n ");
        }

        printf("\nEntrez le cin du patient à modifier: \n");
        scanf("%ld",&ci);
        printf("***********************\n");
        printf("** Menu modification **\n");
        printf("***********************\n");
        printf("1:modifier age\n");
        printf("2:modifier etat\n");
        printf("donner votre choix ");
        scanf("%d",&choix);

        while (fscanf(f1,"%s %s %d %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.etat))!=EOF)
        {
            if ((P.cin)==ci)
            {

                switch(choix)
                {
                case 1:
                    printf("Donnez le nouveau age: ");
                    scanf("%d",&(P.age));
                    fprintf(f1,"%s %s %d %ld %d",P.nom,P.prenom,P.age,P.cin,P.etat);

                    break;
                case 2:
                    printf ("Donner le nouveau etat: ");
                    scanf("%d",&(P.etat));
                    fprintf(f1,"%s %s %d %ld %d",P.nom,P.prenom,P.age,P.cin,P.etat);
                    break;
                default:
                    break;
                    rewind(f1);
                    while (fscanf(f2,"%s %s %d %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.etat))!=EOF)
                    {
                        if ((P.cin)!=ci)

                            fprintf(f2,"%s %s %d %ld %d",P.nom,P.prenom,P.age,P.cin,P.etat);
                    }
                    fclose(f1);
                    fclose(f2);
                    remove(chemin1);
                    rename(temp1,chemin1);
                }
            }

        }
    }
    printf("MODIFICATION FAITE AVEC SUCCÉE !!\n");
    menu_patient(chemin1);
}
//nbre patient
int NombrePatients(char chemin1[])
{
    FILE *f;
    Patient P;
    int nb = 0;
    f=fopen(chemin1,"r");
    if (f==NULL)
    {
        printf("\nImpossible d\'ouvrir le fichier\n");
    }
    else
    {
        while(fscanf(f,"%s %s %d %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.etat))!=EOF)
        {
            nb++;
        }
        fclose(f);
    }
    return nb;
}

